home *** CD-ROM | disk | FTP | other *** search
- 10000 '*************************************************************
- 10010 '***** PC-GOLF THE GOLFER's PROGRAM PC-GOLF *****
- 10020 '***** Version 1.3 (C) 1982,1983,1984 Ed Chandler *****
- 10030 '*************************************************************
- 10040 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 10050 ' 4.0. GET THE GOLF COURSE LIST
- 10060 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 10070 CLS:PRINT MNU4$:PRINT
- 10072 IF ROS=0 THEN 10080
- 10075 DEF SEG=&H40:I%=PEEK(&H17):I%=I% OR 32:POKE &H17,I% 'num lock on
- 10080 MNU1$="1. REVIEW the list of courses.":PRINT SPC(3);MNU1$
- 10090 MNU2$="2. ADD a new course to the list.":PRINT SPC(3);MNU2$
- 10100 MNU3$="3. CHANGE a course in the list.":PRINT SPC(3);MNU3$
- 10110 MNU5$="4. DELETE a course from the list.":PRINT SPC(3);MNU5$
- 10120 PRINT SPC(3);MNURT$:PRINT
- 10130 M1$="key":M2$="(1,2,3,4 or M). ":GOSUB 570
- 10140 IF KB$="1" THEN 10230 'review
- 10150 IF KB$="2" THEN 11570 'add
- 10160 IF KB$="3" THEN 10300 'update
- 10170 IF KB$="4" THEN 11280 'delete
- 10180 IF KB$="M" OR KB$="m" THEN 530 'back to main
- 10190 GOSUB 610:GOTO 10070
- 10200 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 10210 ' 4.1. REVIEW COURSE DESCRIPTION
- 10220 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 10230 GOSUB 10240:GOTO 10070
- 10240 CLS:PRINT MNU1$:M1=1:GOSUB 540 'show courses
- 10250 IF CD=0 THEN GOSUB 580
- 10260 RETURN
- 10270 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 10280 ' 4.3. UPDATE COURSE DESCRIPTION
- 10290 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 10300 GOSUB 10310:GOTO 10070
- 10310 CLS:PRINT MNU3$
- 10320 RESTORE 816:GOSUB 600
- 10330 IF KB$<>"Y" THEN RETURN
- 10340 CLS:PRINT MNU3$:M1=0:GOSUB 540 'show courses
- 10350 IF CD=0 THEN GOSUB 580:RETURN
- 10360 PRINT:M1$="PRESS the line number of the course you want to update. "
- 10370 GOSUB 560:IF KB>0 AND KB<=CMAX AND TMP(KB)=KB THEN RN=KB:GOTO 10390
- 10380 PRINT:PRINT"You must choose a number from the list.":GOSUB 580:GOTO 10340
- 10390 RESTORE 821:GOSUB 600
- 10400 IF KB$<>"Y" THEN 10310
- 10410 '+++++ change a field +++++
- 10420 GOSUB 650:GOSUB 655:GET #2,RN:GET #3,RN 'get record to be changed
- 10430 CLS:PRINT MNU3$: PRINT:PRINT "LINE #"
- 10440 PRINT " 1. Course Name ";SPC(5);B2$
- 10450 PRINT " 2. Telephone ";SPC(5);C2$
- 10460 PRINT " 3. Pro's Name ";SPC(5);D2$
- 10470 PRINT " 4. Par scores ";SPC(5);". . ."
- 10480 PRINT " 5. Course Rating";SPC(5);". . ."
- 10490 PRINT " 6. Hole handicaps";SPC(4);". . ."
- 10500 PRINT:M1$="PRESS the number of the line you want to change. "
- 10510 GOSUB 560:IF KB>0 AND KB<=6 THEN 10540
- 10520 PRINT:PRINT "Please choose a line number from the list."
- 10530 GOSUB 580:GOTO 10430
- 10540 RESTORE 814:GOSUB 600
- 10550 IF KB$<>"Y" THEN 10430
- 10560 '+++++ name +++++
- 10570 IF KB<>1 THEN 10660
- 10580 LNBR=CSRLIN:CNBR=POS(0)
- 10590 KB$=INKEY$:IF KB$<>"" THEN 10590
- 10600 LOCATE LNBR,CNBR:PRINT:LINE INPUT"ENTER the replacement name. ";KB$
- 10610 IF LEN(KB$)>0 AND LEN(KB$)<=NMAX THEN GOSUB 700:LSET B2$=KB$:GOTO 11230
- 10620 LOCATE LNBR+3,CNBR:PRINT"The name is too long. ";NMAX;" letters maximum. Try again."
- 10630 GOSUB 580:LOCATE LNBR,CNBR:FOR I=1 TO 7:PRINT SPACE$(80);:NEXT
- 10640 GOTO 10590
- 10650 '+++++ phone # +++++
- 10660 IF KB<>2 THEN 10740
- 10670 LNBR=CSRLIN:CNBR=POS(0)
- 10680 KB$=INKEY$:IF KB$<>"" THEN 10680
- 10690 LOCATE LNBR,CNBR:PRINT:LINE INPUT"ENTER the replacement phone number. ";KB$
- 10700 L=LEN(KB$):IF L=8 THEN RSET C2$=KB$:GOTO 11230
- 10710 LOCATE LNBR+3,CNBR:PRINT"Please limit the phone number to 8 characters."
- 10720 GOSUB 580:LOCATE LNBR,CNBR:FOR I=1 TO 7:PRINT SPACE$(80);:NEXT:GOTO 10680
- 10730 '+++++ name +++++
- 10740 IF KB<>3 THEN 10830
- 10750 LNBR=CSRLIN:CNBR=POS(0)
- 10760 KB$=INKEY$:IF KB$<>"" THEN 10760
- 10770 LOCATE LNBR,CNBR:PRINT:LINE INPUT"ENTER the replacement name. ";KB$
- 10780 IF LEN(KB$)>0 AND LEN(KB$)<=NMAX THEN GOSUB 700:LSET D2$=KB$:GOTO 11230
- 10790 LOCATE LNBR+3,CNBR:PRINT"The name is too long. ";NMAX;" letters maximum. Try again."
- 10800 GOSUB 580:LOCATE LNBR,CNBR:FOR I=1 TO 7:PRINT SPACE$(80);:NEXT
- 10810 GOTO 10770
- 10820 '+++++ par's +++++
- 10830 IF KB<>4 THEN 10960
- 10840 T1=1:T$="MEN's":P$=E2$:RESTORE 827:GOSUB 600:IF KB$="Y" THEN 10860
- 10850 T1=0:T$="LADIES":P$=H2$:RESTORE 828:GOSUB 600:IF KB$<>"Y" THEN 11230
- 10860 N=1:M=18:GOSUB 730 'p$ to ps(i)
- 10870 T$=T$+" PAR's":M1$="Par"
- 10880 S=1:N=1:M=9:L=0:RESTORE 825:GOSUB 600
- 10890 IF KB$="Y" THEN GOSUB 740:GOTO 10880 'make a change
- 10900 S=1:N=1:M=9:L=9:RESTORE 826:GOSUB 600
- 10910 IF KB$="Y" THEN GOSUB 740:GOTO 10900 'make a change
- 10920 N=1:M=18:N$="":GOSUB 680 'convert PS(i) to P$
- 10930 IF T1=1 THEN LSET E2$=P$ ELSE LSET H2$=P$ 'changes made
- 10940 GOTO 11230
- 10950 '+++++ rating +++++
- 10960 IF KB<>5 THEN 11110
- 10970 CLS:PRINT MNU3$:PRINT:PRINT SPC(3)"COURSE RATING"
- 10980 PRINT USING"1. GOLD ##.#";CVS(K2$)
- 10990 PRINT USING"2. BLUE ##.#";CVS(L2$)
- 11000 PRINT USING"3. WHITE ##.#";CVS(F2$)
- 11010 PRINT USING"4. RED ##.#";CVS(I2$):PRINT
- 11020 M1$="PRESS the line number of your choice.(1,2,3 or 4). ":GOSUB 560
- 11030 IF KB<1 OR KB>4 THEN GOSUB 610:GOTO 10970
- 11040 T1=KB:GOSUB 12400 'get new rating
- 11050 IF T1=1 THEN RSET K2$=MKS$(T!)
- 11060 IF T1=2 THEN RSET L2$=MKS$(T!)
- 11070 IF T1=3 THEN RSET F2$=MKS$(T!)
- 11080 IF T1=4 THEN RSET I2$=MKS$(T!)
- 11090 GOTO 11230
- 11100 '+++++ handicaps +++++
- 11110 IF KB<>6 THEN 11230
- 11120 T1=1:T$="MEN's":P$=G2$:RESTORE 829:GOSUB 600:IF KB$="Y" THEN 11140
- 11130 T1=0:T$="LADIES":P$=J2$:RESTORE 830:GOSUB 600:IF KB$<>"Y" THEN 11230
- 11140 N=2:M=18:GOSUB 730 'p$ to ps(i)
- 11150 T$=T$+" HANDICAP's":M1$="H'cap"
- 11160 S=2:M=9:L=0:RESTORE 825:GOSUB 600
- 11170 IF KB$="Y" THEN GOSUB 740:GOTO 11160 'make a change
- 11180 S=2:M=9:L=9:RESTORE 826:GOSUB 600
- 11190 IF KB$="Y" THEN GOSUB 740:GOTO 11180 'make a change
- 11200 N=2:M=18:N$="":GOSUB 680 'convert PS(i) to P$
- 11210 IF T1=1 THEN LSET G2$=P$ ELSE LSET J2$=P$ 'changes made
- 11220 '+++++ update GCDIR.DAT +++++
- 11230 PUT #2,RN:PUT #3,RN:CLOSE #2,#3:CLS:PRINT "Update completed for ";B2$
- 11240 GCDIR$(RN)=A2B$:M1=0:GOSUB 540:GOSUB 590:RETURN
- 11250 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 11260 ' 4.4. Delete a course from the directory
- 11270 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 11280 GOSUB 11290:GOTO 10070
- 11290 CLS:PRINT MNU5$:M1=0:GOSUB 540 'show courses
- 11300 IF CD=0 THEN GOSUB 580:RETURN 'empty
- 11310 RESTORE 823:GOSUB 600:IF KB$<>"Y" THEN RETURN
- 11320 '
- 11330 PRINT:M1$="PRESS the line number of the course you want to delete. "
- 11340 GOSUB 560:IF KB>0 AND KB<=CMAX AND TMP(KB)=KB THEN RN=KB:GOTO 11370
- 11350 PRINT:PRINT"You must choose a number from the list.":GOSUB 580:GOTO 11290
- 11360 '+++++ test players home course
- 11370 J=0:T$=STR$(RN):GOSUB 660:GOSUB 641 'PDIR.DAT/TEMP.DAT
- 11380 FOR I=1 TO PACT:GET #4,I:IF E4$=T$ THEN J=J+1:LSET TA1$=B4$:PUT #1,J
- 11390 NEXT I:IF J=0 THEN 11460
- 11400 GOSUB 650:GET #2,RN:KB$=B2$:GOSUB 700:PRINT
- 11410 COLOR 0,15,0:PRINT "*** Warning *** ";:COLOR 7,0,0
- 11420 PRINT SPC(2)KB$;" is the home course for:":PRINT:BEEP
- 11430 FOR I=1 TO J:GET #1,I:PRINT TA1$;:IF FNNMODM(I,3)=0 THEN PRINT
- 11440 NEXT:PRINT
- 11450 '+++++
- 11460 CLOSE #1,#2,#4:RESTORE 824:GOSUB 600
- 11470 IF KB$<>"Y" THEN RETURN
- 11480 X=-1:GOSUB 640 ' reduce CACT count
- 11490 GOSUB 650:GOSUB 655:GET #2,RN:GET #3,RN:M1$=B2$:GOSUB 656 'init #2,#3
- 11500 PUT #2,RN:PUT #3,RN:CLOSE #2,#3 'write empty slots
- 11510 GCDIR$(RN)=A2$+B2$ 'remove course from gcdir$
- 11520 CLS:PRINT "Deletion completed for ";M1$
- 11530 M1=0:GOSUB 540:GOSUB 580:RETURN
- 11540 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 11550 ' 4.2. Add a course to the directory
- 11560 '+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- 11570 GOSUB 11580:GOTO 10070
- 11580 CLS:PRINT MNU2$
- 11590 '+++++ Find empty slot for the addition +++++
- 11600 FOR X=1 TO CMAX:N=CVI(LEFT$(GCDIR$(X),2)):IF N=0 THEN 11650
- 11610 NEXT
- 11620 PRINT:PRINT"The Course Directory is full.":PRINT
- 11630 PRINT"To add a course you must first"
- 11640 PRINT"delete a course from the list.":GOSUB 580:RETURN
- 11650 PRINT
- 11660 PRINT"You should have the course ratings and scorecard for the course."
- 11670 GOSUB 580
- 11680 '+++++ open #2,#3 +++++
- 11690 GOSUB 650:GOSUB 655:GCDIR$(X)=MKI$(X):RN=X:RSET A2$=MKI$(RN) 'record #
- 11700 '+++++ name +++++
- 11710 KB$=INKEY$:IF KB$<>"" THEN 11710
- 11720 CLS:PRINT MNU2$:PRINT
- 11730 LINE INPUT"ENTER the name of the golf course you are adding. ";KB$
- 11740 L=LEN(KB$):IF L>0 AND L<=NMAX THEN 11770
- 11750 PRINT:PRINT"The name is too long. ";NMAX;" letters maximum. Try again."
- 11760 GOSUB 580:GOTO 11710
- 11770 IF INSTR(KB$,"*")=0 THEN 11800
- 11780 PRINT:PRINT"Asterisks(*) are not allowed in the course name. Try again."
- 11790 GOSUB 580:GOTO 11710 'bad name
- 11800 GOSUB 700:LSET B2$=KB$ 'name
- 11810 '+++++ phone # +++++
- 11820 KB$=INKEY$:IF KB$<>"" THEN 11820
- 11830 CLS:PRINT MNU2$:PRINT
- 11840 LINE INPUT"ENTER the pro shop phone number, e.g. 555-1212 . ";KB$
- 11850 L=LEN(KB$):IF L=8 THEN 11880
- 11860 PRINT:PRINT"Please limit the phone number to 8 characters."
- 11870 GOSUB 580:GOTO 11820
- 11880 RSET C2$=KB$ 'phone #
- 11890 '+++++ name +++++
- 11900 KB$=INKEY$:IF KB$<>"" THEN 11900
- 11910 CLS:PRINT MNU2$:PRINT
- 11920 LINE INPUT "ENTER the name of the Golf Professional. ";KB$
- 11930 L=LEN(KB$):IF L>0 AND L<=NMAX THEN 11960
- 11940 PRINT:PRINT"Please limit the name to ";NMAX;" letters maximum."
- 11950 GOSUB 580:GOTO 11900
- 11960 GOSUB 700:LSET D2$=KB$ 'name
- 11970 '+++++ pars
- 11980 KB$=B2$:GOSUB 700
- 11990 CLS:PRINT MNU2$:PRINT
- 12000 PRINT"You should have the course ratings and scorecard for ";KB$;"."
- 12010 GOSUB 580:M1$="MENS":GOSUB 12250:LSET E2$=P$
- 12020 CLS:PRINT"Are the pars for Men and Ladies the same?"
- 12030 RESTORE 834:GOSUB 600:IF KB$="Y" THEN 12050
- 12040 GOSUB 580:M1$="LADIES":GOSUB 12250 'ladies
- 12050 LSET H2$=P$
- 12060 '+++++ handicap
- 12070 GOSUB 580:M1$="MENS":GOSUB 12540:LSET G2$=P$ 'men
- 12080 CLS:PRINT"Are the Handicaps for Men and Ladies the same?"
- 12090 RESTORE 834:GOSUB 600:IF KB$="Y" THEN 12110
- 12100 GOSUB 580:M1$="LADIES":GOSUB 12540 'ladies
- 12110 LSET J2$=P$
- 12120 '+++++ rating
- 12130 GOSUB 580:T1=1:GOSUB 12400:RSET K2$=MKS$(T!)'gold
- 12140 GOSUB 580:T1=2:GOSUB 12400:RSET L2$=MKS$(T!)'blue
- 12150 GOSUB 580:T1=3:GOSUB 12400:RSET F2$=MKS$(T!)'white
- 12160 GOSUB 580:T1=4:GOSUB 12400:RSET I2$=MKS$(T!)'red
- 12170 '+++++ create course record +++++
- 12180 PUT #2,RN:PUT #3,RN:CLOSE #2,#3
- 12190 '+++++ Update CACT - INIT.DAT FILE +++++
- 12200 X=1:GOSUB 640 'Update count of active courses
- 12210 GCDIR$(RN)=A2B$ 'save course description
- 12220 CLS:PRINT"Addition completed for ";B2$:M1=0:GOSUB 540:GOSUB 590:RETURN
- 12230 '+++++ subroutine to get pars for front and back nines +++++
- 12240 '+++++ front side +++++
- 12250 CLS:PRINT"ENTER the ";M1$;" pars for the FRONT side."
- 12260 PRINT:PRINT SPC(6);"Hole # Par"
- 12270 S=1:N=1:M=9:L=0:GOSUB 720 'get pars
- 12280 PRINT:PRINT SPC(6);"Par is ";SUM
- 12290 RESTORE 833:GOSUB 600:T$="Change a front nine par"
- 12300 IF KB$="Y" THEN T1$=M1$:M1$="Par":GOSUB 740:M1$=T1$:GOTO 12290
- 12310 '+++++ back side +++++
- 12320 CLS:PRINT"ENTER the ";M1$;" pars for the BACK side."
- 12330 PRINT:PRINT SPC(6);"Hole # Par"
- 12340 S=1:N=1:M=9:L=9:GOSUB 720 'get pars
- 12350 PRINT:PRINT SPC(6);"Par is ";SUM:PRINT
- 12360 RESTORE 833:GOSUB 600:T$="Change a back nine par"
- 12370 IF KB$="Y" THEN T1$=M1$:M1$="Par":GOSUB 740:M1$=T1$:GOTO 12360
- 12380 N=1:N$="":M=18:GOSUB 680:RETURN 'convert PS(I) to P$
- 12390 '+++++ Get course rating +++++
- 12400 KB$=INKEY$:IF KB$<>"" THEN 12400
- 12410 IF T1=1 THEN M1$="GOLD TEEs"
- 12420 IF T1=2 THEN M1$="BLUE TEEs"
- 12430 IF T1=3 THEN M1$="WHITE TEEs"
- 12440 IF T1=4 THEN M1$="RED TEEs"
- 12450 CLS:PRINT"ENTER the course rating, e.g. 71.0, for ";M1$;" at ";B2$:PRINT
- 12460 INPUT"If this rating is not applicable, just press the ENTER key. ",KB$
- 12470 IF MID$(KB$,3,1)="." AND LEN(KB$)=4 THEN 12510
- 12480 IF VAL(KB$)=0 THEN 12510
- 12490 PRINT:PRINT"Please check the course rating and re-enter."
- 12500 GOSUB 580:GOTO 12450
- 12510 T!=VAL(KB$):RETURN 'course rating
- 12520 '+++++ get HANDICAP #'s +++++
- 12530 '+++++ front side +++++
- 12540 CLS:PRINT"ENTER the "M1$;" handicap numbers for the FRONT side."
- 12550 PRINT:PRINT SPC(6);"Hole # H'cap #"
- 12560 S=2:N=2:M=9:L=0:GOSUB 720 'get h'caps
- 12570 RESTORE 833:GOSUB 600:T$="Change a front nine handicap"
- 12580 IF KB$="Y" THEN T1$=M1$:M1$="H'cap":GOSUB 740:M1$=T1$:GOTO 12570
- 12590 '+++++ back side +++++
- 12600 CLS:PRINT"ENTER the ";M1$;" handicap numbers for the BACK side."
- 12610 PRINT:PRINT SPC(6);"Hole # H'cap #"
- 12620 S=2:N=2:M=9:L=9:GOSUB 720 'get h'caps
- 12630 RESTORE 833:GOSUB 600:T$="Change a back nine handicap"
- 12640 IF KB$="Y" THEN T1$=M1$:M1$="H'cap":GOSUB 740:M1$=T1$:GOTO 12630
- 12650 N=2:N$="":M=18:GOSUB 680:RETURN 'convert ps(i) to p$
- 14000 '+++++ grunt work
- 14010 DELETE 490-9999
- 14020 SAVE"b:course.asc",A
- 14030 RUN"b:main.bas"
- 15000 'for chain delete
- 4000 '+++++ grunt work
- 14010 DELETE 490-9999
- 14020 SAVE"b:course.asc",A
- 14030 RUN"b:main.bas"
-